package com.twinkle.abmsspringboot.service.impl;

import com.twinkle.abmsspringboot.entity.UserInfo;
import com.twinkle.abmsspringboot.mapper.UserInfoMapper;
import com.twinkle.abmsspringboot.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * ABMS - SpringBoot
 * <p>service impl 用户服务</p>
 * <p>service -> interface :UserInfoService -> implement :UserInfoServiceImpl</p>
 * <p>
 * 更新了形参变量名
 *
 * @author Twinkle
 * @version 1.0.1
 * @see com.twinkle.abmsspringboot.service.UserInfoService
 * @since 15 Nov. 2020
 * @since 2 Aug. 2021
 * @since 4 Aug. 2021
 */
@Service
public class UserInfoServiceImpl implements UserInfoService {

    @Autowired
    protected UserInfoMapper userInfoMapper;

    /**
     * 登录
     * <p>
     * 查询结果不为空时，登录成功
     *
     * @param paraUsername 待登陆账号
     * @param paraPassword 待登录账号的密码
     * @return 查询结果
     */
    @Override
    public UserInfo signIn(String paraUsername, String paraPassword) {
        return userInfoMapper.checkLoginInfo(new UserInfo(paraUsername, paraPassword));
    }

    /**
     * 注册
     * <p>
     * 执行结果值为 true，执行成功；反之，执行失败
     *
     * @param paraUsername 待注册账号
     * @param paraPassword 待注册账号的密码
     * @return 执行结果
     */
    @Override
    public boolean signUp(String paraUsername, String paraPassword) {
        int checkSignUp = -2;
        if (userInfoMapper.selectUserInfoOne(paraUsername) == null) {
            checkSignUp = userInfoMapper.insertUserinfo(new UserInfo(paraUsername, paraPassword));
        }
        return checkSignUp > 0;
    }

    /**
     * 更新用户信息
     * <p>
     * 执行结果值为 true，执行成功；反之，执行失败
     *
     * @param paraUserInfo 待更新的用户信息
     * @return 执行结果
     */
    @Override
    public boolean updateUserInfo(UserInfo paraUserInfo) {
        int checkUpdateUserInfo = userInfoMapper.updateUserinfo(paraUserInfo);
        return checkUpdateUserInfo > 0;
    }

}
